/*
 * MenuDejarDeCompartir.cpp
 *
 *  Created on: Oct 10, 2011
 *      Author: tomas
 */

#include "MenuDejarDeCompartir.h"

MenuDejarDeCompartir::MenuDejarDeCompartir() {
	crearMenu();

}

MenuDejarDeCompartir::~MenuDejarDeCompartir() {
	borrarMenu();
}

void MenuDejarDeCompartir::crearMenu(){
	list<string> archivos = Usuario::getInstance()->misArchivosCompartidos();
	list<string>::iterator it = archivos.begin();
	int i= 1;
	for (; it != archivos.end(); it++) {
		DejarCompartirArchivoCommand * command = new DejarCompartirArchivoCommand(*it);
		commands[i] = command;
		MenuItem * item = new MenuItem(i,(*it),command);
		opciones[i] = item;
		add(*item);
		i++;
	}

	VolverAlMenuAnteriorCommand* volverCommand = new VolverAlMenuAnteriorCommand();
	commands[i] = volverCommand;
	MenuItem* itemVolver = new MenuItem(i,"Volver",volverCommand);
	opciones[i] = itemVolver;

	add(*itemVolver);

}

void MenuDejarDeCompartir::borrarMenu(){
	CommandsMap::iterator endCommands = commands.end();
	for (CommandsMap::iterator it = commands.begin(); it != endCommands; ++it) {
		delete commands[(*it).first];
	}
	commands.clear();

	MenuItemsMap::iterator endMenuItems = opciones.end();
	for (MenuItemsMap::iterator it = opciones.begin(); it != endMenuItems; ++it) {
		delete opciones[(*it).first];
	}
	opciones.clear();
	this->clearItems();

}

void MenuDejarDeCompartir::update(){
	borrarMenu();
	crearMenu();
	cout << "Sus archivos compartidos son:" << endl << endl;
	display();
	cout << endl << "Opción: ";

	string input;
	int opcion;
	cin.clear();
	getline(cin, input);
	stringstream myStream(input);
	if (myStream >> opcion) {
		select(opcion);
	}
}

